// 商品分类全局组件的小仓库
import { defineStore } from 'pinia'
import type { CategoryResponseData } from '@/api/product/attr/type'
import type { CategoryState } from './types/type'

// 引入分类接口方法
import { reqC1, reqC2, reqC3 } from '@/api/product/attr'

// 选择式API写法

let useCategoryStore = defineStore('CategoryStore', {
  state: (): CategoryState => {
    return {
      // 存储一级分类的id
      c1CategorySelectId: '',
      c2CategorySelectId: '',
      c3CategorySelectId: '',
      // 存储一级分类的数据
      c1Arr: [],
      // 对应一级分类下的二级分类数据
      c2Arr: [],
      // 对应二级分类下的三级分类数据
      c3Arr: [],
    }
  },
  actions: {
    // 获取一级分类的数据
    async getC1() {
      // 获取一级分类的数据
      let result: CategoryResponseData = await reqC1()
      if (result.code == 200) {
        this.c1Arr = result.data
        return 'ok'
      } else {
        return Promise.reject(new Error(`获取一级分类失败${result.message}`))
      }
    },

    // 获取二级分类的数据
    async getC2() {
      // 获取一级分类的数据
      let result: CategoryResponseData = await reqC2(this.c1CategorySelectId)
      if (result.code == 200) {
        this.c2Arr = result.data
        return 'ok'
      } else {
        return Promise.reject(new Error(`获取二级分类失败${result.message}`))
      }
    },

    // 获取三级分类的数据
    async getC3() {
      // 获取一级分类的数据
      let result: CategoryResponseData = await reqC3(this.c2CategorySelectId)
      if (result.code == 200) {
        this.c3Arr = result.data
        return 'ok'
      } else {
        return Promise.reject(new Error(`获取三级分类失败${result.message}`))
      }
    },
  },
  getters: {},
})

export default useCategoryStore
